package cn.biplam.common.bean.md;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.paramters.ModelType.Model_Type;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.UserInfo;

public abstract class MdIndex extends Bean{

	/**
	 * 根据对象的物理ID和模型类型获取索引ID
	 * @param realId   物理ID
	 * @param modelType 模型类型
	 * @return 指定对象的索引ID
	 * @throws ErrorMessage 
	 */
	public abstract String getNodeIdByRealId(String realId, Model_Type modelType)
			throws ErrorMessage;

	/**
	 * 根据对象的物理ID和模型类型获取对象所属根主题的索引ID
	 * @param realId   物理ID
	 * @param modelType 模型类型
	 * @return 指定对象的根主题索引ID
	 * @throws ErrorMessage
	 */
	public abstract String getRootIdByRealId(String realId, Model_Type modelType)
			throws ErrorMessage;

	public abstract String getNodeID();

	public abstract boolean getIsLeaf() throws ErrorMessage;

	public abstract String getOperatorType();
	
	public abstract String getNodeParent();
	
	public abstract void QuaryByIndexId(String indexId) throws ErrorMessage;
	
	public abstract String getNodeType();
	
	public abstract String getRealId();
	
	/**
	 * 新建实例
	 * @param classParams 类参数
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdIndex getNewInstance(Object... classParams) throws ErrorMessage{
		return (MdIndex)get(MdIndex.class.getSimpleName(), classParams);
	}
	
	/**
	 * 新建实例
	 * @param classParams 类参数
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdIndex getNewInstance(String userId) throws ErrorMessage{
		return (MdIndex)get(MdIndex.class.getSimpleName(), userId);
	}
	
	/**
	 * 新建实例
	 * @param classParams 类参数
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdIndex getNewInstance(UserInfo mUser,String realId,Model_Type modelType) throws ErrorMessage{
		return (MdIndex)get(MdIndex.class.getSimpleName(), mUser,realId,modelType);
	}

}